package com.vueperson.vueperson.t1.CreationalPattern.SingletonPattern.Lazy;

public class LazySingleton {
    private static volatile LazySingleton instance=null;
    private LazySingleton(){}

    /**
     * 使用synchronized关键字对方法加锁,确保任意时刻只有一个线程可执行方法
     *
     */
     public static LazySingleton getInstance(){
         //第一重判断
        if (instance == null) {
            //锁定代码块
          synchronized (LazySingleton.class) {
              //第二重判断
              if (instance == null) {
                  instance=new LazySingleton(); //创建实例
              }

          }
        }
        return instance;
    }

    public static void main(String[] args) {
        LazySingleton lazySingleton1= LazySingleton.getInstance();
        LazySingleton lazySingleton2= LazySingleton.getInstance();
        System.out.println(lazySingleton1.toString());
        System.out.println(lazySingleton2.toString());
    }
}
